﻿/*
# -*- coding: utf-8 -*-
# 注意：

# 若希望将本代码用于商业用途，需先联系作者并获得明确授权。
# 作者不对因使用本代码引发的任何直接或间接损失负责。
# 如有违反上述条款的行为，作者保留追究法律责任的权利。

# 免责声明：
# 请尊重知识产权，遵循相关法律法规。

# Notice:
# If you wish to use this code for commercial purposes, you must contact the author and obtain explicit authorization.
# The author is not responsible for any direct or indirect losses caused by the use of this code.
# If any of the above terms are violated, the author reserves the right to pursue legal action.
# Disclaimer:
# Please respect intellectual property rights and comply with relevant laws and regulations.

# Внимание:
# Если вы хотите использовать этот код в коммерческих целях, вам необходимо связаться с автором и получить явное разрешение.
# Автор не несет ответственности за любые прямые или косвенные убытки, возникшие в результате использования этого кода.
# В случае нарушения вышеуказанных условий автор оставляет за собой право на юридическое преследование.
# Отказ от ответственности:
# Пожалуйста, уважайте интеллектуальную собственность и соблюдайте соответствующие законы и нормативные акты.

# Attention :
# Si vous souhaitez utiliser ce code à des fins commerciales, vous devez contacter l'auteur et obtenir une autorisation explicite.
# L'auteur n'est pas responsable des pertes directes ou indirectes causées par l'utilisation de ce code.
# En cas de violation des conditions ci-dessus, l'auteur se réserve le droit de poursuivre une action en justice.
# Avertissement :
# Veuillez respecter les droits de propriété intellectuelle et vous conformer aux lois et réglementations en vigueur.

# 注意：

# 若希望将本代码用于商业用途，需先联系作者并获得明确授权。
# 作者不对因使用本代码引发的任何直接或间接损失负责。
# 如有违反上述条款的行为，作者保留追究法律责任的权利。

# 免责声明：
# 请尊重知识产权，遵循相关法律法规。

# Notice:
# If you wish to use this code for commercial purposes, you must contact the author and obtain explicit authorization.
# The author is not responsible for any direct or indirect losses caused by the use of this code.
# If any of the above terms are violated, the author reserves the right to pursue legal action.
# Disclaimer:
# Please respect intellectual property rights and comply with relevant laws and regulations.

# Внимание:
# Если вы хотите использовать этот код в коммерческих целях, вам необходимо связаться с автором и получить явное разрешение.
# Автор не несет ответственности за любые прямые или косвенные убытки, возникшие в результате использования этого кода.
# В случае нарушения вышеуказанных условий автор оставляет за собой право на юридическое преследование.
# Отказ от ответственности:
# Пожалуйста, уважайте интеллектуальную собственность и соблюдайте соответствующие законы и нормативные акты.

# Attention :
# Si vous souhaitez utiliser ce code à des fins commerciales, vous devez contacter l'auteur et obtenir une autorisation explicite.
# L'auteur n'est pas responsable des pertes directes ou indirectes causées par l'utilisation de ce code.
# En cas de violation des conditions ci-dessus, l'auteur se réserve le droit de poursuivre une action en justice.
# Avertissement :
# Veuillez respecter les droits de propriété intellectuelle et vous conformer aux lois et réglementations en vigueur.

# 注意：

# 若希望将本代码用于商业用途，需先联系作者并获得明确授权。
# 作者不对因使用本代码引发的任何直接或间接损失负责。
# 如有违反上述条款的行为，作者保留追究法律责任的权利。

# 免责声明：
# 请尊重知识产权，遵循相关法律法规。

# Notice:
# If you wish to use this code for commercial purposes, you must contact the author and obtain explicit authorization.
# The author is not responsible for any direct or indirect losses caused by the use of this code.
# If any of the above terms are violated, the author reserves the right to pursue legal action.
# Disclaimer:
# Please respect intellectual property rights and comply with relevant laws and regulations.

# Внимание:
# Если вы хотите использовать этот код в коммерческих целях, вам необходимо связаться с автором и получить явное разрешение.
# Автор не несет ответственности за любые прямые или косвенные убытки, возникшие в результате использования этого кода.
# В случае нарушения вышеуказанных условий автор оставляет за собой право на юридическое преследование.
# Отказ от ответственности:
# Пожалуйста, уважайте интеллектуальную собственность и соблюдайте соответствующие законы и нормативные акты.

# Attention :
# Si vous souhaitez utiliser ce code à des fins commerciales, vous devez contacter l'auteur et obtenir une autorisation explicite.
# L'auteur n'est pas responsable des pertes directes ou indirectes causées par l'utilisation de ce code.
# En cas de violation des conditions ci-dessus, l'auteur se réserve le droit de poursuivre une action en justice.
# Avertissement :
# Veuillez respecter les droits de propriété intellectuelle et vous conformer aux lois et réglementations en vigueur.

# 注意：

# 若希望将本代码用于商业用途，需先联系作者并获得明确授权。
# 作者不对因使用本代码引发的任何直接或间接损失负责。
# 如有违反上述条款的行为，作者保留追究法律责任的权利。

# 免责声明：
# 请尊重知识产权，遵循相关法律法规。

# Notice:
# If you wish to use this code for commercial purposes, you must contact the author and obtain explicit authorization.
# The author is not responsible for any direct or indirect losses caused by the use of this code.
# If any of the above terms are violated, the author reserves the right to pursue legal action.
# Disclaimer:
# Please respect intellectual property rights and comply with relevant laws and regulations.

# Внимание:
# Если вы хотите использовать этот код в коммерческих целях, вам необходимо связаться с автором и получить явное разрешение.
# Автор не несет ответственности за любые прямые или косвенные убытки, возникшие в результате использования этого кода.
# В случае нарушения вышеуказанных условий автор оставляет за собой право на юридическое преследование.
# Отказ от ответственности:
# Пожалуйста, уважайте интеллектуальную собственность и соблюдайте соответствующие законы и нормативные акты.

# Attention :
# Si vous souhaitez utiliser ce code à des fins commerciales, vous devez contacter l'auteur et obtenir une autorisation explicite.
# L'auteur n'est pas responsable des pertes directes ou indirectes causées par l'utilisation de ce code.
# En cas de violation des conditions ci-dessus, l'auteur se réserve le droit de poursuivre une action en justice.
# Avertissement :
# Veuillez respecter les droits de propriété intellectuelle et vous conformer aux lois et réglementations en vigueur.

# 注意：

# 若希望将本代码用于商业用途，需先联系作者并获得明确授权。
# 作者不对因使用本代码引发的任何直接或间接损失负责。
# 如有违反上述条款的行为，作者保留追究法律责任的权利。

# 免责声明：
# 请尊重知识产权，遵循相关法律法规。

# Notice:
# If you wish to use this code for commercial purposes, you must contact the author and obtain explicit authorization.
# The author is not responsible for any direct or indirect losses caused by the use of this code.
# If any of the above terms are violated, the author reserves the right to pursue legal action.
# Disclaimer:
# Please respect intellectual property rights and comply with relevant laws and regulations.

# Внимание:
# Если вы хотите использовать этот код в коммерческих целях, вам необходимо связаться с автором и получить явное разрешение.
# Автор не несет ответственности за любые прямые или косвенные убытки, возникшие в результате использования этого кода.
# В случае нарушения вышеуказанных условий автор оставляет за собой право на юридическое преследование.
# Отказ от ответственности:
# Пожалуйста, уважайте интеллектуальную собственность и соблюдайте соответствующие законы и нормативные акты.

# Attention :
# Si vous souhaitez utiliser ce code à des fins commerciales, vous devez contacter l'auteur et obtenir une autorisation explicite.
# L'auteur n'est pas responsable des pertes directes ou indirectes causées par l'utilisation de ce code.
# En cas de violation des conditions ci-dessus, l'auteur se réserve le droit de poursuivre une action en justice.
# Avertissement :
# Veuillez respecter les droits de propriété intellectuelle et vous conformer aux lois et réglementations en vigueur.

 */
using System.Collections.Generic;
using UnityEngine;

public partial class GameSettings : ScriptableObject
{
    public const string DEFAULT_NAME = nameof(GameSettings);


    //    [SerializeField] private AdColonySettings _androidAdColonySetting;
    //    [SerializeField] private AdColonySettings _iosAdColonySetting;
    //    [SerializeField] private LeadersboardSetting _iosLeadersboardSetting;
    //    [SerializeField] private LeadersboardSetting _androidLeadersboardSetting;
    [SerializeField] private string _iosAppId;
    [SerializeField] private InAppSetting _inAppSetting;
//    [SerializeField] private DailyRewardSetting _dailyRewardSetting;
    [SerializeField] private AdsSettings _adsSettings;
    [SerializeField] private PrivatePolicySetting _privatePolicySetting;

    public PrivatePolicySetting PrivatePolicySetting => _privatePolicySetting;
    public AdsSettings AdsSettings => _adsSettings;
    public string IosAppId => _iosAppId;
    public AdmobSetting IosAdmobSetting => _adsSettings.iosAdmobSetting;
    public AdmobSetting AndroidAdmobSetting => _adsSettings.androidAdmobSetting;
    //    public AdColonySettings AndroidAdColonySetting => _androidAdColonySetting;
    //    public AdColonySettings IosAdColonySetting => _iosAdColonySetting;
//    public DailyRewardSetting DailyRewardSetting => _dailyRewardSetting;
    //    public LeadersboardSetting IosLeadersboardSetting => _iosLeadersboardSetting;
    //    public LeadersboardSetting AndroidLeadersboardSetting => _androidLeadersboardSetting;
    public InAppSetting InAppSetting => _inAppSetting;
}

public partial class GameSettings
{
    public static GameSettings Default => Resources.Load<GameSettings>(nameof(GameSettings));

#if UNITY_EDITOR
    [UnityEditor.MenuItem("MyGames/GameSettings")]
    public static void OpenGameSettings()
    {
        GamePlayEditorManager.OpenScriptableAtDefault<GameSettings>();
    }
#endif
}


public partial class GameSettings
{

    //    public const string ANDROID_LEADERSBOARD_SETTINGS = nameof(_androidLeadersboardSetting);
    //    public const string IOS_LEADERSBOARD_SETTINGS = nameof(_iosLeadersboardSetting);
    public const string IOS_APP_ID = nameof(_iosAppId);
    public const string IN_APP_SETTING = nameof(_inAppSetting);
//    public const string DAILY_REWARD_SETTING = nameof(_dailyRewardSetting);

    public const string PRIVATE_POLICY_SETTING = nameof(_privatePolicySetting);
    //    public const string ANDROID_AD_COLONY_SETTINGS = nameof(_androidAdColonySetting);
    //    public const string IOS_AD_COLONY_SETTINGS = nameof(_iosAdColonySetting);
    public const string ADS_SETTINGS = nameof(_adsSettings);

}


[System.Serializable]
public struct AdsSettings
{
    public AdmobSetting iosAdmobSetting;
    public AdmobSetting androidAdmobSetting;
    public Vector2Int minAndMaxGameOversBetweenInterstitialAds;

}

[System.Serializable]
public struct DailyRewardSetting
{
    public bool enable;
    public List<int> rewards;
}

[System.Serializable]
public struct PrivatePolicySetting
{
    public bool enable;
    public string url;
}

//[System.Serializable]
//public struct NotificationSetting
//{
//    public bool enable;
//    public List<string> comebackMessages;
//    public List<int> comebackDelayTimes;
//}

[System.Serializable]
public struct InAppSetting
{
    public bool enable;
    public string removeAdsId;
}

//[System.Serializable]
//public struct AdColonySettings
//{
//    public bool enable;
//    public string appId;
//    public string interstitialZoneId;
//    public string currencyZoneId;
//}

[System.Serializable]
public struct AdmobSetting
{
    public bool enable;
    public string interstitialId;
    public string admobRewardedId;
}

[System.Serializable]
public struct LeadersboardSetting
{
    public bool enable;
    public string leadersboardId;
}
